﻿using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using static UnityEngine.GraphicsBuffer;

public class class_2 : MonoBehaviour
{
    // Start is called before the first frame update
    public GameObject Earth;
    void Start()
    {
        //Invoke("test", 3);//执行一次
       // InvokeRepeating("test", 1,0.1f);//参数   方法   第一次调用  和之后调用的时间间隔
    }

    // Update is called once per frame
    void Update()
    {
        test();
        
    }
    public void test()
    {
       // print("666");
        //this.gameObject.transform.Translate(new Vector3(5,5,5));//移动物体到坐标
       // this.gameObject.transform.Translate(new Vector3(5*Time.deltaTime,0,0));//移动物体到坐标

        //旋转
        this.gameObject.transform.Rotate(0,100,0);//绕自己 参数是角度
       // this.gameObject.transform.RotateAround(new Vector3(10,0,0), Vector3.up, 100 * Time.deltaTime);//1 绕某一个点,Vector3.up是Y轴
       
        //2 绕一个物体不是一个点,他动你也动
        transform.RotateAround(Earth.transform.position,Vector3.up,10);//3 绕一个物体要把地球的坐标
        #region
        // 使用 this.gameObject.transform 访问当前物体的 Transform 组件
        // RotateAround 方法用于使当前物体围绕指定点进行旋转

        // new Vector3(20, 0, 0) 是我们想要围绕旋转的点的坐标
        // 在这个例子中，旋转中心位于 (20, 0, 0) 的位置

        // Vector3.up 表示旋转轴，这里是 Y 轴
        // 这意味着物体将会绕 Y 轴进行旋转

        // 100 * Time.deltaTime 是旋转的角度增量
        // 100 是每秒旋转的角度数，乘以 Time.deltaTime 可以保证在不同帧率下旋转速度一致
        // Time.deltaTime 是上一帧所消耗的时间，以秒为单位

        // this.gameObject.transform.RotateAround(new Vector3(20, 0, 0), Vector3.up, 100 * Time.deltaTime);
        //        在 Unity 中，如果你想要围绕不同的点进行旋转，可以通过调整 GameObject 的位置或使用空物体作为旋转中心。以下是一些示例代码，展示如何沿着不同的点进行旋转。

        //### 示例 1: 绕自身中心旋转

        //```csharp
        //using UnityEngine;

        //public class RotateAroundSelf : MonoBehaviour
        //    {
        //        void Update()
        //        {
        //            // 沿自身中心旋转
        //            transform.Rotate(0, 100 * Time.deltaTime, 0);
        //        }
        //    }
        //```

        //### 示例 2: 绕某个指定点旋转

        //在这个示例中，我们创建一个新的空物体作为旋转中心，然后使目标物体绕这个中心旋转。

        //```csharp
        //using UnityEngine;

        //public class RotateAroundPoint : MonoBehaviour
        //{
        //    public Transform pivot; // 旋转中心

        //    void Update()
        //    {
        //        // 绕 pivot 旋转
        //        transform.RotateAround(pivot.position, Vector3.up, 100 * Time.deltaTime);
        //    }
        //}
        //```

        //### 示例 3: 绕另一个物体旋转

        //如果你想让一个物体围绕另一个物体（比如玩家对象）旋转，可以这样做：

        //```csharp
        //using UnityEngine;

        //public class RotateAroundAnotherObject : MonoBehaviour
        //{
        //    public Transform target; // 目标物体

        //    void Update()
        //    {
        //        // 沿着 target 物体的位置旋转
        //        transform.RotateAround(target.position, Vector3.up, 100 * Time.deltaTime);
        //    }
        //}
        //```

        //### 示例 4: 绕任意轴旋转

        //你可以选择任意轴进行旋转，下面的示例展示了如何绕非标准轴旋转。

        //```csharp
        //using UnityEngine;

        //public class RotateAroundArbitraryAxis : MonoBehaviour
        //{
        //    public Vector3 customAxis = new Vector3(1, 1, 0); // 自定义旋转轴

        //    void Update()
        //    {
        //        // 绕自定义轴旋转
        //        transform.Rotate(customAxis.normalized, 100 * Time.deltaTime);
        //    }
        //}
        //```

        //### 示例 5: 使用插值平滑旋转

        //为了使旋转更加平滑，可以使用 `Quaternion.Lerp` 或 `Quaternion.Slerp` 来实现插值旋转：

        //```csharp
        //using UnityEngine;

        //public class SmoothRotateAroundPoint : MonoBehaviour
        //{
        //    public Transform pivot; // 旋转中心
        //    public float rotationSpeed = 100f;

        //    void Update()
        //    {
        //        // 计算目标旋转角度
        //        Quaternion targetRotation = Quaternion.Euler(0, rotationSpeed * Time.deltaTime, 0) * transform.rotation;

        //        // 绕 pivot 旋转
        //        transform.RotateAround(pivot.position, Vector3.up, rotationSpeed * Time.deltaTime);

        //        // 平滑过渡到目标旋转
        //        transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime);
        //    }
        //}
        //```

        //这些示例应该能帮助你理解如何在 Unity 中围绕不同的点进行旋转。你可以根据需要调整旋转的轴和速度。

        #endregion


    }
}
